package com.ryder.petmatediarybackend.module.social.entity;

import java.time.LocalDateTime;
import java.io.Serial;
import lombok.Data;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.FieldFill;
import java.io.Serializable;

 /**
 * 描述: 社交动态表（仅支持图片，公开或私密）(SocialPost)实体类
 * 
 * @author Ryder
 * @version 1.0
 * @since 1.0
 * 更新日期: 2025-10-31 03:35:59
 */
@Data
public class SocialPost implements Serializable {

    @Serial
    private static final long serialVersionUID = 342877886595959887L;

    /**
     * 动态ID（雪花ID生成）
     */
    @TableId(type = IdType.ASSIGN_ID)
    private Long id;

    /**
     * 发布用户ID
     */
    private Long userId;

    /**
     * 关联宠物ID（可选）
     */
    private Long petId;

    /**
     * 动态类型：1=宠物圈子 2=社交小圈子 3=店铺圈子
     */
    private Integer postType;

    /**
     * 圈子ID（社交小圈子/店铺圈子）
     */
    private Long circleId;

    /**
     * 动态内容（文字描述）
     */
    private String content;

    /**
     * 图片URL列表（JSON数组，仅支持图片）
     */
    private String mediaUrls;

    /**
     * 隐私级别：1=公开 2=私密
     */
    private Integer privacyLevel;

    /**
     * 位置信息
     */
    private String location;

    /**
     * 点赞数
     */
    private Integer likeCount;

    /**
     * 转发数
     */
    private Integer forwardCount;

    /**
     * 浏览数
     */
    private Integer viewCount;

    /**
     * 是否置顶：0=否 1=是
     */
    private Integer isTop;

    /**
     * 是否推荐：0=否 1=是
     */
    private Integer isRecommended;

    /**
     * 审核状态：0=待审核 1=审核通过 2=审核驳回
     */
    private Integer auditStatus;

    /**
     * 审核备注
     */
    private String auditRemark;

    /**
     * 审核人ID
     */
    private Long auditorId;

    /**
     * 审核时间
     */
    private LocalDateTime auditTime;

    /**
     * 状态：1=正常 2=已隐藏 3=违规
     */
    private Integer status;

    /**
     * 逻辑删除：0未删除 1已删除
     */
    @TableLogic
    private Integer isDeleted;

    /**
     * 创建时间
     */
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;

    /**
     * 更新时间
     */
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;
}
